From 1513da3149397ce795bb4964926f7811325d4810 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Mon, 27 Oct 2008 11:27:31 +0000 Subject: [PATCH] serial: Fix IRQ enable/disable in tx interrupt handler. Signed-off-by: Keir Fraser --- xen/drivers/char/serial.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/xen/drivers/char/serial.c b/xen/drivers/char/serial.c index 9628b2c96b..28cd434a56 100644 --- a/xen/drivers/char/serial.c +++ b/xen/drivers/char/serial.c @@ -74,7 +74,7 @@ void serial_tx_interrupt(struct serial_port *port, struct cpu_user_regs *regs) while ( !spin_trylock(&port->tx_lock) ) { if ( !port->driver->tx_empty(port) ) - return; + goto out; cpu_relax(); } @@ -89,7 +89,10 @@ void serial_tx_interrupt(struct serial_port *port, struct cpu_user_regs *regs) } } - spin_unlock_irqrestore(&port->tx_lock, flags); + spin_unlock(&port->tx_lock); + + out: + local_irq_restore(flags); } static void __serial_putc(struct serial_port *port, char c) -- 2.30.2